package com.kcwx.shareddomain.system.dto;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Data;
import lombok.EqualsAndHashCode;

import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull;
import javax.validation.constraints.Pattern;
import javax.validation.constraints.Size;

/**
 * 菜单 编辑信息
 *
 */
@Data
@EqualsAndHashCode(callSuper = true)
public class SysMenuEditDto extends EditBaseDto {
    /** 菜单名称 */
    private String menuName;

    /** 父菜单ID */
    private Long parentId;

    /** 显示顺序 */
    private Integer orderNum;

    /** 路由地址 */
    private String path;

    /** 组件路径 */
    private String component;

    /** 路由参数 */
    private String query;

    /** 类型（M目录 C菜单 F按钮） */
    private String menuType;

    /** 显示状态（1显示 0隐藏） */
    private  Integer visible;

    /** 菜单状态（1启用 0停用） 默认1*/
    private Integer status;

    /** 权限字符串 */
    private String perms;

    /** 菜单图标 */
    private String icon;

    /** 组件名称 */
    private String menuCode;

    /** 重定向 */
    private String redirect;

    /** 外链/内嵌地址 */
    private String link;

    /** 是否为外链（1是 0否） */
    private Integer isFrame;

    /** 是否缓存（1缓存 0不缓存） */
    private Integer isCache;

    /** 是否固定 0否 1是 */
    private Integer isAffix;

    @NotBlank(message = "菜单名称不能为空")
    @Size(min = 0, max = 50, message = "菜单名称长度不能超过50个字符")
    public String getMenuName() {
        return menuName;
    }

    @NotNull(message = "显示顺序不能为空")
    public Integer getOrderNum() {
        return orderNum;
    }

    @Size(min = 0, max = 200, message = "路由地址不能超过200个字符")
    public String getPath() {
        return path;
    }

    @Size(min = 0, max = 200, message = "组件路径不能超过255个字符")
    public String getComponent() {
        return component;
    }

    @NotBlank(message = "菜单类型不能为空")
    public String getMenuType() {
        return menuType;
    }

    @Size(min = 0, max = 100, message = "权限标识长度不能超过100个字符")
    public String getPerms() {
        return perms;
    }
}
